Notation

Throughout this document the following conventions are used:

{ ... }
Curly braces group together whatever they enclose.

[ ... ]
Square brackets indicate that what they enclose is optional. See also Dot-notation below.

*
Braces or brackets followed by a star, e.g. { ... }* , indicate zero or more occurences of the enclosed item. See also Dot-notation below.

+
Braces or brackets followed by a plus sign, e.g. [ ... ]+, indicate one or more occurences of the enclosed item.

|
A vertical bar is used to separate alternatives in a braced or bracketed group, e.g. { thing1 | ... | thingN }.

$\Longrightarrow$
is used to indicate evaluation. (Evaluation is described in section [*].) It is read as ``evaluates to''. For example, (+ 3 5) $\Longrightarrow$ 8 means that evaluating the expression (+ 3 5) yields 8.

indicates code equivalence. It is read as ``is equivalent to''. For example, means that for any x, the value and effects of (CAR (CDR x)) are always the same as the value and effects of (CADR x).

is used in definitions to indicate the type of the result. For example, means that the procedure named NUMBER? yields a boolean result.
\begin{codexenv}
(PRINT {\it object port\/}) $\longrightarrow$\ {\it undefined}
\end{codexenv}
means that PRINT returns a value of no particular interest; that is, one should not depend on it to return anything in particular.

Italicized
names in the code examples are meta-variables that stand for pieces of code to be filled in. Restrictions on the particular types or values of a meta-variable are often suggested by its name or are given in the text associated with the example. The term object denotes data of unrestricted type.

Dot-notation
, as in (ADD . numbers), is used where any number of sub-forms are permitted. In this example, there may be zero or more numbers; the description subsumes cases such as (ADD), (ADD 3), and (ADD 3 5 2). See also * and ([ ... ]) above.

Settable
Some routines described in this manual, such as VREF (page [*]), serve as access routines in the sense that they are appropriate for use in SET and related forms to designate locations. These routines have their descriptions flagged with the notation Settable.

Type Predicate
Functions that take an object of any type as an argument and return a boolean are called type predicates. They return true if the argument was of the required type and false otherwise.

Operation
Functions that dispatch on their first argument are labelled as operations. See Chapter [*].